Virtualization gateway between virtualized and non-virtualized networks

ABSTRACT

Methods and apparatus are provided for controlling communication between a virtualized network and non-virtualized entities using a virtualization gateway. A packet is sent by a virtual machine in the virtualized network to a non-virtualized entity. The packet is routed by the host of the virtual machine to a provider address of the virtualization gateway. The gateway translates the provider address of the gateway to a destination address of the non-virtualized entity and sends the packet to the non-virtualized entity. The non-virtualized entity may be a physical resource, such as a physical server or a storage device. The physical resource may be dedicated to one customer or may be shared among customers.

RELATED APPLICATION

This application is a continuation patent application of copendingapplication with Ser. No. 13/210,510, (attorney docket no. 332702.01)filed Aug. 16, 2011, entitled “VIRTUALIZATION GATEWAY BETWEENVIRTUALIZED AND NON-VIRTUALIZED NETWORKS”, which is now allowed. Theaforementioned application(s) are hereby incorporated herein byreference.

FIELD OF THE INVENTION

This invention relates to virtualization gateways that bridgecommunication between virtualized networks and non-virtualized networksand, more particularly, to methods and apparatus for controllingcommunication between a virtualized network and a non-virtualizedentity, such as between a virtual machine and a physical server.

BACKGROUND OF INVENTION

Data centers may include several hundred or several thousand serversinterconnected by high-speed switches and routers. Cloud data centersmay provide a variety of services, such as web applications, e-mailservices, search engine services, etc., for a plurality of customers. Inrecent years, data centers have transformed computing, with large scaleconsolidation of enterprise IT into data center hubs and with theemergence of cloud computing service providers.

Virtual machine (VM) technology allows one or more operating systems, orvirtual machines, to run concurrently on one physical host, or physicalmachine. The advantages of virtual machine technology have become widelyrecognized. Among these advantages are the ability to run multiplevirtual machines on a single host and the ability to migrate virtualmachines from one host to another.

There is a need for cloud data centers to support multi-tenant ormulti-organization network isolation while maintaining customeraddresses across premises of various scopes. Customers need to moveservices from corporate networks to cloud data centers withoutdisrupting services due to address renumbering, and data centeradministrators need the flexibility to migrate or consolidate work loadswithout reconfiguring the networks or disrupting services. To satisfythese requirements, cloud data centers need to accommodate potentiallyoverlapping customer addresses.

In virtualized networks, a virtual machine may communicate with physicalresources, such as storage devices, which are not virtualized. Thephysical resources may be located within the data center, at a customerlocation or at another data center. The physical resources may bededicated to one customer or may be shared among customers. The virtualmachine and the physical resources may utilize different addressingschemes.

SUMMARY OF INVENTION

It has been proposed to use policy-controlled network virtualization todecouple application or customer addresses from physical or provideraddresses while maintaining the mapping between the two sets ofaddresses. This allows customers to maintain customer addresses whilemoving services across subnets or premises. It also allows data centeradministrators to consolidate and migrate services within and acrosssubnets without disrupting services and enables data center providers toaccommodate overlapping address spaces from customers.

The present invention provides methods and apparatus for controllingcommunication between a virtualized network and non-virtualized entitiesusing a virtualization gateway. A packet is sent by a virtual machine inthe virtualized network to a non-virtualized entity. The packet isrouted by the host of the virtual machine to a provider address of thevirtualization gateway. The gateway translates the provider address ofthe gateway to a destination address of the non-virtualized entity andsends the packet to the non-virtualized entity.

In some embodiments, the non-virtualized entity comprises a physicalserver having a customer address in the address space of the virtualizednetwork. The gateway translates the provider address of the gateway tothe customer address of the physical server. In such embodiments, thephysical server may be dedicated to the virtualized network

In further embodiments, the non-virtualized entity comprises a physicalserver having a provider address. The gateway translates the provideraddress of the gateway by performing network address translation. Insuch embodiments, the physical server may be shared among customers. Thenetwork address translation may comprise performing a first networkaddress translation in response to a packet received from a virtualmachine in a first virtual network and performing a second networkaddress translation in response to a packet received from a virtualmachine in a second virtual network.

In further embodiments, translating the provider address of the gatewaycomprises accessing a virtual network policy containing a mapping policythat maps the provider address of the gateway to the address of thenon-virtualized entity. The gateway may receive a mapping policy updatefrom a virtual machine manager of the virtualized network. The mappingpolicy update may reflect mapping policy changes in the virtualizednetwork.

In further embodiments, the gateway may receive a packet sent by thenon-virtualized entity to the virtual machine in the virtualizednetwork. The gateway translates a customer address of the virtualmachine to a provider address of the virtual machine and sends thepacket to the provider address of the virtual machine in the virtualizednetwork.

According to an aspect of the invention, a method is provided forcontrolling communication between a virtualized network and anon-virtualized entity. The method comprises receiving, by avirtualization gateway, a packet sent by a virtual machine in thevirtualized network to the non-virtualized entity and routed to aprovider address of the gateway by a host of the virtual machine;translating, by the gateway, the provider address of the gateway to adestination address of the non-virtualized entity; and sending, by thegateway, the packet to the non-virtualized entity.

According to another aspect of the invention, a virtualization gatewayis provided for controlling communication between a virtualized networkand a non-virtualized entity. The virtualization gateway comprises aprocessing device and a storage device encoded with instructions that,when executed by the processing device, are configured to: receive apacket sent by a virtual machine in the virtualized network to thenon-virtualized entity and routed to a provider address of the gatewayby a host of the virtual machine; translate the provider address of thegateway to a destination address of the non-virtualized entity; and sendthe packet to the non-virtualized entity.

According to a further aspect of the invention, a method is provided forcontrolling communication between a virtualized network and anon-virtualized entity. The method comprises receiving, by a host, apacket sent by a virtual machine to the non-virtualized entity at adestination address; translating, by the host, the destination addressof the packet to a provider address of a virtualization gateway; andsending, by the host, the packet to the provider address of thevirtualization gateway for address translation and sending to thenon-virtualized entity.

BRIEF DESCRIPTION OF DRAWINGS

For a better understanding of the present invention, reference is madeto the accompanying drawings, which are incorporated herein by referenceand in which:

FIG. 1 is a schematic block diagram of an embodiment of a data centerconnected to a customer system;

FIG. 2 is a schematic block diagram of an embodiment of a data center,illustrating communication between a virtual machine and a dedicatedphysical server through a virtualization gateway;

FIG. 3 is a schematic block diagram, illustrating an embodiment of thevirtualization gateway of FIG. 2;

FIG. 4 is a flowchart that illustrates communication between a virtualmachine and a dedicated physical server, in accordance with embodimentsof the invention;

FIG. 5 is a flowchart that illustrates communication between a physicalserver and a virtual machine in the virtualized network, in accordancewith embodiments of the invention;

FIG. 6 is a schematic block diagram of an embodiment of a data center,illustrating communication between a virtual machine and a sharedphysical resource;

FIG. 7 is a schematic block diagram, illustrating an embodiment of thevirtualization gateway of FIG. 6;

FIG. 8 is a flowchart that illustrates communication between a virtualmachine and a shared physical resource, in accordance with embodimentsof the invention;

FIG. 9 is a schematic block diagram of an embodiment of a data center,illustrating communication between a virtual machine and a sharedphysical resource in the case of live migration of the virtual machine;

FIG. 10 is a schematic block diagram of an embodiment of a data center,illustrating communication between a virtual machine and a Non-IPresource;

FIG. 11 is a schematic block diagram of an embodiment of a data center,illustrating a load balancer provisioned with virtualization gatewayfunctionality; and

FIG. 12 is a schematic block diagram of an embodiment of a computingdevice.

DETAILED DESCRIPTION

A simplified schematic block diagram of an embodiment of a data centerincorporating features of the invention is shown in FIG. 1. A datacenter 10 may include a first host 12, a second host 14 and avirtualization gateway 16 interconnected by a data center network fabric20. As used herein, the term “host” refers to a physical machine,typically a server or other computing device as shown, for example, inFIG. 12 and described below. The data center further includes a virtualmachine manager 22. Included in the tasks of virtual machine manager 22are provisioning and updating of mapping policies to hosts 12 and 14 andvirtualization gateway 16 as described below.

Each of the hosts in data center 10 may host one or more virtualmachines (VM), which may include a complete operating system capable ofrunning applications independently of other virtual machines. As shownin FIG. 1, first host 12 hosts virtual machines 30, 32 and 34, andsecond host 14 hosts virtual machines 40 and 42.

Each of the hosts in data center 10 may include a switch to route datapackets to and from the virtual machines in the host. In the case of asingle virtual machine, a switch may not be required. Each of thevirtual machines may include a network adapter for externalcommunication via the host in which it resides. Each of the hostsfurther includes a virtualization module for address translation duringcommunication to and from the virtual machines in the host.

In the example of FIG. 1, virtual machines 30 and 42 are part of a firstvirtual network, or isolation group, virtual machines 32 and 40 are partof a second virtual network, or isolation group, and virtual machine 34is part of a third virtual network, or isolation group. The threevirtual networks may correspond to three different customers of the datacenter and are isolated from each other, even though virtual machines ofthe three virtual networks may be hosted by the same host. Each virtualnetwork may include additional virtual machines (not shown) on the sameor different hosts. Further, data center 10 may host additional virtualnetworks.

As further shown in FIG. 1, virtualization gateway 16 is connectedthrough a physical network 50 to physical servers 52, 54 and 56. Each ofthe physical servers 52, 54 and 56 may be, for example, a storage deviceor other non-virtualized physical resource. The virtualization gateway16 facilitates communication between one or more of the virtual machinesand one or more of the physical servers. In some embodiments, physicalservers 52, 54 and 56 may be dedicated to one virtual network, such asthe virtual network including virtual machines 30 and 42. In otherembodiments, the physical servers 52, 54 and 56 may be shared among twoor more virtual networks.

As further shown in FIG. 1, data center 10 is connected via a loadbalancer 60, an edge router 62 and the Internet 64 to a customer system70. In the embodiment of FIG. 1, customer system 70 includes a router72, a VPN gateway 74 and enterprise network 76, which hosts virtualmachines 80 and 82. It will be understood that customer system 70 mayhave any configuration. In the embodiment of FIG. 1, the first virtualnetwork, including virtual machines 30 and 42, in data center 10 isdedicated to customer system 70.

A second embodiment of data center 10 is shown in FIGS. 2 and 3. In theembodiment of FIGS. 2 and 3, first host 12 hosts virtual machines 100,102 and 104, and second host 14 hosts virtual machines 106, 108 and 110.Virtual machines 100, 102 and 106 are elements of a first virtualnetwork 112 (FIG. 3), and virtual machines 104, 108 and 110 are elementsof a second virtual network 114. Virtualization gateway 120 is coupledby a network 122 to a physical server 124 and storage devices 126 and128.

As shown in FIG. 2, each virtual machine is associated with a customeraddress AA (application address) and a provider address LA (location orphysical address). The customer address AA corresponds to the IP addressof the virtual machine, and the provider address LA corresponds to thephysical location of the virtual machine in data center 10. Thus, forexample, virtual machine 100 in first host 12 has a customer address AA₁and a provider address LA₁. Two or more virtual machines may have thesame customer address AA, but the provider address LA of each virtualmachine is unique in data center 10. Together, the customer address AA₁and the provider address LA₁ form an address pair AA₁:LA₁, which definesa mapping policy for virtual machine 100. The mapping policy is used tocontrol communications between virtual machines and to controlcommunications between a virtual machine and a non-virtualized entity,as discussed below. The customer address AA is used by the virtualmachines, whereas the provider address LA is used by the physicalmachines, such as hosts.

A number of mapping policies for a virtual network may be grouped in avirtual network policy, such as virtual network policy 140 shown in FIG.2. The virtual network policy 140 resides in first host 12, second host14, virtual machine manager 22 and virtualization gateway 120 and isassociated with the first virtual network 112. Virtual network 112includes virtual machines 100, 102 and 106 and may include other virtualmachines (not shown). Each entry in virtual network policy 140 includesa mapping policy comprising a customer address AA and a provider addressLA.

In the example of FIGS. 2 and 3, the physical resources includingphysical server 124 and storage devices 126 and 128 are dedicated to thefirst virtual network 112 including virtual machines 100, 102 and 106.Accordingly, virtual network policy 140 includes an entry for each ofvirtual machines 100, 102 and 106, an entry for physical server 124 andentries for storage devices 126 and 128. As shown in FIG. 2, physicalserver 124 is assigned customer address AA_(P1), storage device 126 isassigned customer address AAP₂, and storage device 128 is assignedcustomer address AA_(P3). Further, physical server 124 and storagedevices 126 and 128 each map to the provider address LA_(GW) of gateway120. Each entry in the virtual network policy 140 may include additionalinformation as needed. It will be understood that the virtual networkpolicy may have any structure, such as a table, that contains themapping information.

As noted above, virtual network policy 140 includes a policy mappingentry for each virtual machine and each physical resource in the firstvirtual network 112. Additional virtual network policies correspond toadditional virtual networks. For example, a separate virtual networkpolicy in first host 12 and second host 14 contains mapping policies forthe second virtual network 114 including virtual machines 104, 108 and110.

As shown in FIG. 3, virtualization gateway 120 may include avirtualization module 160 and an IP forwarding module 162. Gateway 120may further include a network interface card (NIC) 164 connected to datacenter fabric 20 and a network interface card 166 connected to network122. NIC 164 enables communication through data center fabric 20 tovirtual network 112. NIC 166 enables communication through network 122to physical server 124 and storage devices 126 and 128. As indicated byarrow 168, virtualization module 160 communicates with virtual machinemanager 22. Virtual machine manager 22 provides virtualization manager160 with mapping policies that define address translations in accordancewith embodiments of the invention.

In the embodiment of FIGS. 2 and 3, physical server 124 and storagedevices 126 and 128 are dedicated to virtual network 112 and communicateonly with virtual network 112. Physical server 124 and storage devices126 and 128 are assigned customer addresses AA_(P1), AA_(P2) andAA_(P3), respectively. Thus, physical server 124 and storage devices 126and 128 may be considered as part of the address space of virtualnetwork 112. The address space for virtual network 112 may be dividedinto a first part including virtual machines 100, 102 and 106 and asecond part including physical server 124 and storage devices 126 and128. When virtualization module 160 identifies a packet addressed to oneof physical server 124 and storage devices 126 and 128, the packet issent through network interface card 166 and network 122 to itsdestination. When virtualization module 160 identifies a packetaddressed to one of virtual machines 100, 102 and 106, the packet issent through network interface card 164 and data center fabric 20 to itsdestination.

FIG. 4 is a flowchart that illustrates a process for communicationbetween a virtual machine and a dedicated physical server, in accordancewith embodiments of the invention. In particular, virtual machine 100sends a packet to physical server 124.

In act 200, virtual machine 100 sends a packet 220 (arrow (1) in FIG. 2)addressed to physical server 124 at customer address AA_(P1)(AA₁→AA_(P1)). In act 202, first host 12 of virtual machine 100references virtual network policy 140 which includes a mapping policyfor physical server 124 at customer address AA_(P1). The mapping policyindicates that a packet addressed to physical server 124 is directed tothe provider address LA_(GW) of gateway 120.

In act 204, first host 12 of virtual machine 100 may encapsulate thepacket with the provider address LA_(GW) of gateway 120 (LA₁→LA_(GW)) toprovide an encapsulated packet 222 (FIG. 2). In act 206, first host 12of virtual machine 100 sends the packet, which has been processed byaddress encapsulation to gateway 120 (arrow (2) in FIG. 2).

In act 208, gateway 120 receives the encapsulated packet 222 from firsthost 12 and decapsulates the packet to provide a decapsulated packet224. In particular, the provider address portion of the packet isremoved, leaving the customer address AA_(P1) of physical server 124. Inact 210, gateway 120 delivers the decapsulated packet 224 to physicalserver 124 (arrow (3) in FIG. 2). The virtual network policy of gateway120 provides a mapping policy between the provider address LA_(GW) ofgateway 120 and the customer address AA_(P1) of physical server 124.

FIG. 5 is a flowchart that illustrates a process for communicationbetween a physical server and a virtual machine in a virtualizednetwork, in accordance with embodiments of the invention. In theembodiment of FIG. 5, physical server 124 sends a packet to virtualmachine 100 in first virtual network 112. The process is essentially thereverse of the process shown in FIG. 4 and described above.

In act 250, physical server 124 having address AA_(P1) sends a packet tovirtual machine 100 having customer address AA₁. In act 252, gateway 120references its virtual network policy to obtain a mapping from customeraddress AA₁ of virtual machine 100 to provider address LA₁ of virtualmachine 100. In act 254, gateway 120 may encapsulate the packet with theprovider address of virtual machine 100 (LA_(GW)→LA₁). In act 256,gateway 120 sends the encapsulated packet to host 12 of virtual machine100.

In act 258, host 12 of virtual machine 100 receives the packet anddecapsulates the packet according to the mapping policy in virtualnetwork policy 140, which relates provider address LA₁ of virtualmachine 100 to customer address AA₁ of virtual machine 100. In act 260,the decapsulated packet is delivered to virtual machine 100 at customeraddress AA₁.

A third embodiment of data center 10 is shown in FIGS. 6 and 7. In theembodiment of FIGS. 6 and 7, first host 12 hosts virtual machines 100,102 and 104 as described above. Virtual machines 100 and 102 areelements of first virtual network 112 (FIG. 7), and virtual machine 104is an element of second virtual network 114. As indicated above, virtualnetworks 112 and 114 may include additional elements (not shown).

As further shown in FIGS. 6 and 7, data center 10 includes a physicalserver 300 and storage devices 302 and 304. The physical server 300 andthe storage devices 302 and 304 may correspond to physical server 124and storage devices 126 and 128, respectively, shown in FIGS. 2 and 3.However, physical server 300 and storage devices 302 and 304 have adifferent addressing scheme from the physical resources shown in FIGS. 2and 3. Physical server 300 and storage devices 302 and 304 are connectedthrough a network 310 to data center network fabric 20 and have provideraddresses LA_(P1),LA_(P2) and LA_(P3), respectively.

As further shown in FIGS. 6 and 7, data center 10 includes avirtualization gateway 320 which hosts a first NAT (Network AddressTranslation) module 322 and a second NAT module 324. First NAT module322 operates with first virtual network 112, and second NAT module 324operates with second virtual network 114. The NAT modules enable sharingof physical resources by different virtual networks, as described below.

As shown in FIG. 6, first host 12 includes virtual network policy 140including mapping policies between customer addresses and provideraddresses in first virtual network 112. First host 12 also includes asecond virtual network policy 142 including mapping policies betweencustomer addresses and provider addresses in second virtual network 114.As shown, virtual network policy 140 maps customer addresses AA_(P1),AA_(P2) and AA_(P3) to the provider address LA_(GW) of virtualizationgateway 320. Virtualization gateway 320 includes a virtual networkpolicy 330 which differs from virtual network policy 140 by mappingcustomer addresses AA_(P1), AA_(P2) and AA_(P3) of the physicalresources to provider addresses LA_(P1), LA_(P2) and LA_(P3),respectively. As shown in FIG. 7, virtualization gateway 320 includes avirtualization module 340 and a network interface card 342. The networkinterface card 342 is coupled to data center fabric 20 and is coupledthrough network 310 to physical server 300 and storage devices 302 and304.

FIG. 8 is a flowchart of a process for communication between a virtualmachine and a shared physical resource, in accordance with embodimentsof the invention. The acts of the process are indicated by correspondingarrows in FIG. 6.

In act 350, the virtual machine 100 sends a packet 352 (arrow (1) inFIG. 6) addressed to physical server 300 at customer address AA_(P1). Inact 354, first host 12 of virtual machine 100 references a mappingpolicy in virtual network policy 140 which corresponds to physicalserver 300. First host 12 determines that physical server 300 atcustomer address AA_(P1) maps to provider address LA_(GW) ofvirtualization gateway 320.

In act 356, first host 12 encapsulates the packet with the provideraddress LA_(GW) of gateway 320 to provide packet 358 (FIG. 6). In act360, first host 12 sends the encapsulated packet 358 to gateway 320.

In act 362, gateway 320 receives the encapsulated packet 358 from firsthost 12 of virtual machine 100. In act 364, gateway 320 decapsulatesreceived packet 358 to provide decapsulated packet 366 (arrow (2) inFIG. 6). In act 370, the first NAT module 322 of gateway 320 performsnetwork address translation of decapsulated packet 366 to provide an NATpacket 372 (arrow (3) in FIG. 6). The NAT packet 372 is in the customeraddress space and indicates that customer address AA_(NAT) is sending apacket to physical server 300 at address AA_(P1). In act 374, gateway320 rewrites the NAT packet 372 from the customer address space to theprovider address space to provide NAT packet 376 (arrow (4) in FIG. 6).The NAT packet 376 indicates that provider address LA_(NAT) is sending apacket to physical server 300 at provider address LA_(P1). Gateway 320sends the NAT packet 376 to physical server 300 at provider addressLA_(P1) (arrow (5) in FIG. 6).

After the first NAT module 322 has established an entry corresponding tovirtual machine 100, the physical server 300 can send a reply packet tovirtual machine 100 using the reverse of the operations shown in FIG. 8and described above. In a similar procedure, virtual machine 104 insecond virtual network 114 can send a packet to physical server 300using the second NAT module 324.

As indicated above, virtual machine hosts in data center 10 includemapping policies which map physical servers to the provider address ofgateway 320. In contrast, gateway 320 includes mapping policies whichmap the customer addresses of the physical resources to correspondingprovider addresses. In addition, the first host 12 encapsulates packetsdirected to gateway 320, whereas the gateway 320 rewrites packetsdirected to physical server 300. In particular, virtual network policy140 in first host 12 includes mapping policies for address encapsulationof packets sent to gateway 320, and virtual network policy 330 invirtualization gateway 330 includes mapping policies for addressrewriting of packets sent to the physical resources.

FIG. 9 is a schematic block diagram of an embodiment of a data center,illustrating communication between a virtual machine and a sharedphysical resource in the case of live migration of the virtual machine.As shown in FIG. 9, virtual machine 100 is transferred by livemigration, as indicated by arrow 400, from first host 12 to third host410. Live migration allows the transfer of a running virtual machinefrom one host to another host without significant disruption of theoperation of the virtual machine. The live migration may be controlledby virtual machine manager 22.

The customer address AA₁ of migrated virtual machine 100 _(m) remainsunchanged, but the provider address of migrated virtual machine 100 _(m)changes from provider address LA₁ to provider address LA_(NEW) in theexample of FIG. 9. The new provider address LA_(NEW) of migrated virtualmachine 100 _(m) is reflected in the virtual network policy of each hostand virtualization gateway 320 of the virtual network in order to avoidpacket loss. Accordingly, the mapping policy in each of the hosts andgateway 320 in the virtual network is updated following the livemigration.

Prior to live migration, virtual machine 100 on first host 12 sends apacket to storage device 302, as indicated by arrow 420 in FIG. 9, usingthe process shown in FIGS. 6-8 and described above. The virtualizationgateway 320 receives the encapsulated packet from first host 12 andperforms decapsulation and network address translation of the packet toprovide a NAT packet. The NAT packet is translated to a provider addressLA_(NAT) and is sent to storage device 302.

Following live migration, it is assumed that virtual network policy 330in gateway 320 has been updated to reflect the new mapping policy ofmigrated virtual machine 100 _(m). In particular, virtual network policy330 includes an address pair AA₁:LA_(NEW), which defines a mappingpolicy for migrated virtual machine 100 _(m). If migrated virtualmachine 100 _(m) sends a packet to storage device 302, the packet isencapsulated by third host 410 and is sent to gateway 320, as indicatedby arrow 422. Gateway 320 verifies the updated mapping policy formigrated virtual machine 100 _(m) and performs decapsulation and networkaddress translation as shown in FIGS. 6-8 and described above. Afternetwork address translation, the NAT packet is translated to provideraddress LA_(NAT) and is sent to storage device 302. Thus, the packetappears to be received by storage device 302 from provider addressLA_(NAT) before and after live migration.

In effect, the network address translation masquerades the changes ofthe provider address of virtual machine 100 while maintainingconnections between the virtual machine 100 and the physical resource.The virtual network policy 330 insures the correct mapping of provideraddresses for virtual machine 100 before and after live migration. Withthis approach, live migration is transparent to the physical servers, asthey only see the NAT address LA_(NAT).

FIG. 10 is a schematic block diagram of an embodiment of a data center,illustrating communication between a virtual machine and a Non-IPresource. In data center 10 of FIG. 10, first host 12 hosts virtualmachine 450, and second host 14 hosts virtual machine 452. Non-IPresources, including physical server 300 and storage devices 302 and304, are connected through network 310 and Non-IP gateway 460 to datacenter network fabric 20. First host 12 includes a virtual networkpolicy 456 having mapping policies for address encapsulation of packetssent to the Non-IP resources.

As further shown in FIG. 10, virtual machine 452 sends a packet 470 tostorage device 304 (arrow (1) in FIG. 10). The virtual machine 452 usesEthernet MAC addresses in addressing the packet. In particular, virtualmachine 452 uses the MAC address of storage device 304 (MAC₂→MAC_(P3)).The packet 470 is encapsulated by second host 14 with the provideraddress LA_(NIP) of gateway 460 to provide encapsulated packet 472. Theencapsulated packet 472 is sent to gateway 460 and is decapsulated toprovide decapsulated packet 474 (arrow (2) in FIG. 10). The decapsulatedpacket 474 is sent by gateway 460 to storage device 304.

FIG. 11 is a schematic block diagram of a data center, illustrating aload balancer provisioned with virtualization gateway functionality. Indata center 10 of FIG. 11, first host 12 hosts virtual machines 100, 102and 104; second host 14 hosts virtual machines 106, 108 and 110; thirdhost 510 hosts virtual machines 520, 522 and 524; and fourth host 530hosts virtual machines 540 and 542. Virtual machines 100, 102, 106, 520,524 and 540 are elements of a first virtual network, as represented by avirtual network policy 550. Virtual machines 104, 108, 110, 522 and 542are elements of a second virtual network, as represented by a virtualnetwork policy 552.

A load balancer 560 is coupled between the Internet and the data centernetwork fabric 20. Load balancer 560 includes policy-based networkvirtualization and contains virtual network policies 550 and 552.

As shown in FIG. 11, one embodiment of the gateways is to integrate thevirtualization gateway functionality into a load balancer, to implementa multi-tenant, virtualization-aware load balancer. Existing loadbalancers perform the “balancing” by spreading queries to oneexternal-facing IP address, called VIP, to a set of backend serverworkloads represented by different DIPs, for Direct IP. A load balancerintegrated with the virtualization functionality can work in thefollowing way. The external facing side of the load balancer isconfigured with multiple VIPs, one per customer. Each VIP can map to aset of DIPs, in the AA address space of the given customer. The set ofAA DIPs is indexed by the customer identifier, which can be used todirect the traffic to the correct AA-LA mapping policies ofvirtualization. For example, the load balancer can have two VIPaddresses: VIP_(A)=128.1.1.1 for Customer A, and VIP_(B)=128.1.1.2 forCustomer B. The load balancing algorithm for Customer A (128.1.1.1) isto spread evenly to a set of two Customer A VM AA's: 10.1.1.1 and10.1.1.2 for customer A, whereas for the Customer B (128.1.1.2) themapping is to two Customer B VM AA's: also 10.1.1.1 and 10.1.1.2.

The load balancer indexes the load balancing tables separately forVIP_(A) and VIP_(B) such that the correct virtualization mapping tablesfor Customer A and Customer B will be used for any incoming request. Forexample, the Customer A's AA's: 10.1.1.1 and 10.1.1.2 can be mapped toLA₁ and LA₂, whereas the Customer B's AA's 10.1.1.1 and 10.1.1.2 can bemapped to LA₃ and LA₄. This way the load balancing functionality can beseamlessly integrated with the internal data center virtualizationpolicy. As described previously, an advantage of the integratedarchitecture of the gateway is that the virtualization module of thegateway will also be part of the data center virtualization policyframework, through VM deployment and live migration. One benefit is thatnow the backend workload can be migrated across physical subnets, aslong as the AA-LA mapping table in the integrated load balancer is alsoupdated. All of these can happen without breaking existing loadbalancing or proxy sessions because the DIPs, which are AA's for VMs,remain unchanged.

To support IP multicast in a multi-tenant environment, the managementservers can assign each customer virtual network a multicast address inthe LA space. All multicast traffic from customer VMs will beencapsulated and redirected onto the customer-specific multicast groups(or addresses) in the data center. Isolation of multicast traffic isalso achieved by this separate multicast group for each customer. Forexample, the data center administrator, using a management tool such asVMM, can assign 224.0.0.1 for customer A, and 224.0.0.2 for customer B.While VMs for customer A and customer B both send multicast trafficdestined to multicast group (destination address) 224.1.2.3, thevirtualization rule will specify the following:

(Policy 1) Packets sent to any multicast or broadcast destination fromcustomer A's VMs→Encapsulate with 224.0.0.1

(Policy 2) Packets sent to any multicast or broadcast destination fromcustomer B's VMs→Encapsulate with 224.0.0.2

Based on these policies, a packet sent by customer A from AA_(A1) to224.1.2.3 will be encapsulated with LA_(A1) to 224.0.0.1, and a packetsent by customer B from AA_(B1) to 224.1.2.3 will be encapsulated withLA_(B1) to 224.0.0.2. As long as all physical hosts of customer A's VMsall subscribe to 224.0.0.1, and all physical hosts of customer B's VMsall subscribe to 224.0.0.2, the multicast packets reach all the hostsfor customer A's and customer B's VMs respectively. Upon receiving themulticast packets, the virtualization policy will also differentiatesthe packets sent to 224.0.0.1 to be destined for VMs of customer A,whereas 224.0.0.2 to be destined for VMs of customer B. The packets willget decapsulated, and indicated to the correct VMs based on thevirtualization rules.

The invention is operational with numerous other general purpose orspecial purpose computing system environments or configurations.Examples of well known computing systems, environments, and/orconfigurations that may be suitable for use with the invention include,but are not limited to, personal computers, server computers, hand-heldor laptop devices, multiprocessor systems, microprocessor-based systems,set top boxes, programmable consumer electronics, network PCs,minicomputers, mainframe computers, distributed computing environmentsthat include any of the above systems or devices, and the like.

The invention may be described in the general context of acomputer-executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, etc. that performparticular tasks or implement particular abstract data types. Theinvention may also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a communication network. In a distributed computing environment,program modules may be located in both local and remote computer storagemedia including memory storage devices.

With reference to FIG. 12, an exemplary system for implementing theinvention includes a general purpose computing device in the form of acomputer 1010. The computing device of FIG. 12 can be used forimplementing the hosts, the virtual machine manager and any othercomputing devices described herein. Components of computer 1010 mayinclude, but are not limited to, a processing unit 1020, a system memory1030, and a system bus 1021 that couples various system componentsincluding the system memory to the processing unit 1020. The system1021, may be any of several types of bus structures including a memorybus or memory controller, a peripheral bus, and a local bus using any ofa variety of bus architectures. By way of example, and not limitation,such architectures include Industry Standard Architecture (ISA) bus,Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnect (PCI) bus also known as Mezzanine bus.

Computer 1010 typically includes a variety of computer readable media.Computer readable media can be any available media that can be accessedby computer 1010 and includes both volatile and nonvolatile media,removable and non-removable media. By way of example, and notlimitation, computer readable media may comprise computer storage media.Computer storage media includes both volatile and nonvolatile, removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules or other data. Computer storage mediaincludes, but is not limited to, RAM, ROM, EEPROM, flash memory or othermemory technology, CD-ROM, digital versatile disks (DVD) or otheroptical disk storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed bycomputer 1010. Combinations of the any of the above should also beincluded within the scope of computer readable storage media.

The system memory 1030 includes computer storage media in the form ofvolatile and/or nonvolatile memory such as read only memory (ROM) 1031and random access memory (RAM) 1032. A basic input/output system 1033(BIOS), containing the basic routines that help to transfer informationbetween elements within computer 1010, such as during start-up, istypically stored in ROM 1031. RAM 1032 typically contains data and/orprogram modules that are immediately accessible to and/or presentlybeing operated on by processing unit 1020. By way of example, and notlimitation, FIG. 12 illustrates operating system 1034, applicationprograms 1035, other program modules 1036, and program data 1037.

The computer 1010 may also include other removable/non-removablevolatile/nonvolatile computer storage media. By way of example only,FIG. 12 illustrates a hard disk drive 1040 that reads from or write tonon-removable, nonvolatile magnetic media, a magnetic disk drive 1051that reads from or writes to a removable, nonvolatile magnetic disk1052, and an optical disk drive 1055 that reads from or writes to aremovable, nonvolatile optical disk 1056 such as a CD ROM or otheroptical media. Other removable/non-removable, volatile/nonvolatilecomputer storage media that can be used in the exemplary operatingenvironment include, but are not limited to, magnetic tape cassettes,flash memory cards, digital versatile disks, digital video tape, solidstate RAM, solid state ROM, and the like. The hard disk drive 1041 istypically connected to the system bus 1021 through a non-removablememory interface such as interface 1040, and magnetic disk drive 1051and optical disk drive 1055 are typically connected to the system bus1021 by a removable memory interface, such as interface 1050.

The drives and their associated computer storage media, discussed aboveand illustrated in FIG. 12, provide storage of computer readableinstructions, data structures, program modules and other data for thecomputer 1010. In FIG. 12, for example, hard disk drive 1041 isillustrated as storing operating system 1044, application programs 1045,other program modules 1046, and program data 1047. Note that thesecomponents can either be the same as or different from operating system1034, application programs1035, other program modules 1036, and programdata 1037. Operating system 1044, application programs 1045, otherprogram modules 1046, and program data 1047 are given different numbershere to illustrate that, at a minimum, they are different copies.

A user may enter commands and information into the computer 1010 throughinput devices such as a keyboard 1062 and pointing device 1061, commonlyreferred to as a mouse, trackball or touch pad. Other input devices mayinclude a microphone 1063, joystick, a tablet 1064, satellite dish,scanner, or the like. These and other input devices are often connectedto the processing unit 1020 through a user input interface 1060 that iscoupled to the system bus, but may not be connected by other interfaceand bus structures, such as a parallel port, game port or a universalserial bus (USB). A monitor 1091 or other type of display device is alsoconnected to the system 1021 via an interface, such as a video interface1090. In addition to the monitor, computers may also include otherperipheral output devices such as speakers 1097 and printer 1096, whichmay be connected through a output peripheral interface 1095.

The computer 1010 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer1080. The remote computer 1080 may be a personal computer, a server, arouter, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto the computer 1010, although only a memory storage device 1081 hasbeen illustrated in FIG. 12. The logical connections depicted in FIG. 12include a local area network (LAN) 1071 and a wide area network (WAN)1073 and a wireless link, for example via a wireless interface 1098complete with an antenna, but may also include other networks. Suchnetworking environments are commonplace in offices, enterprise-widecomputer networks, intranets and the Internet. While wireless interface1098 is shown directly connected to system bus 1021, it is recognizedthat the wireless interface 1098 may be connected to system bus 1021 vianetwork interface 1070.

When used in a LAN networking environment, the computer 1010 isconnected to the LAN 1071 through a network interface or adapter 1070.When used in a WAN networking environment, the computer 1010 typicallyincludes a modem 1072 or other means for establishing communicationsover the WAN 1073, such as the Internet. The modem 1072, which may beinternal or external, may be connected to the system bus 1021 via theuser input interface 1060, or other appropriate mechanism. In anetworked environment, program modules depicted relative to the computer1010, or portions thereof, may be stored in the remote memory storagedevice. By way of example, and not limitation, FIG. 12 illustratesremote application programs 1085 as residing on memory device 1081. Itwill be appreciated that the network connections shown are exemplary andother means of establishing a communications link between the computersmay be used.

Having thus described several aspects of at least one embodiment of thisinvention, it is to be appreciated that various alterations,modifications, and improvements will readily occur to those skilled inthe art.

Such alterations, modifications, and improvements are intended to bepart of this disclosure, and are intended to be within the spirit andscope of the invention. Accordingly, the foregoing description anddrawings are by way of example only.

The above-described embodiments of the present invention can beimplemented in any of numerous ways. For example, the embodiments may beimplemented using hardware, software or a combination thereof. Whenimplemented in software, the software code can be executed on anysuitable processor or collection of processors, whether provided in asingle computer or distributed among multiple computers. Such processorsmay be implemented as integrated circuits, with one or more processorsin an integrated circuit component. Though, a processor may beimplemented using circuitry in any suitable format.

Further, it should be appreciated that a computer may be embodied in anyof a number of forms, such as a rack-mounted computer, a desktopcomputer, a laptop computer, or a tablet computer. Additionally, acomputer may be embedded in a device not generally regarded as acomputer but with suitable processing capabilities, including a PersonalDigital Assistant (PDA), a smart phone or any other suitable portable orfixed electronic device.

Also, a computer may have one or more input and output devices. Thesedevices can be used, among other things, to present a user interface.Examples of output devices that can be used to provide a user interfaceinclude printers or display screens for visual presentation of outputand speakers or other sound generating devices for audible presentationof output. Examples of input devices that can be used for a userinterface include keyboards, and pointing devices, such as mice, touchpads, and digitizing tablets. As another example, a computer may receiveinput information through speech recognition or in other audible format.

Such computers may be interconnected by one or more networks in anysuitable form, including as a local area network or a wide area network,such as an enterprise network or the Internet. Such networks may bebased on any suitable technology and may operate according to anysuitable protocol and may include wireless networks, wired networks orfiber optic networks.

Also, the various methods or processes outlined herein may be coded assoftware that is executable on one or more processors that employ anyone of a variety of operating systems or platforms. Additionally, suchsoftware may be written using any of a number of suitable programminglanguages and/or programming or scripting tools, and also may becompiled as executable machine language code or intermediate code thatis executed on a framework or virtual machine.

In this respect, the invention may be embodied as a computer readablestorage medium (or multiple computer readable media) (e.g., a computermemory, one or more floppy discs, compact discs (CD), optical discs,digital video disks (DVD), magnetic tapes, flash memories, circuitconfigurations in Field Programmable Gate Arrays or other semiconductordevices, or other non-transitory, tangible computer storage medium)encoded with one or more programs that, when executed on one or morecomputers or other processors, perform methods that implement thevarious embodiments of the invention discussed above. The computerreadable storage medium or media can be transportable, such that theprogram or programs stored thereon can be loaded onto one or moredifferent computers or other processors to implement various aspects ofthe present invention as discussed above. As used herein, the term“non-transitory computer-readable storage medium” encompasses only acomputer-readable medium that can be considered to be a manufacture(i.e., article of manufacture) or a machine. Alternatively oradditionally, the invention may be embodied as a computer readablemedium other than a computer-readable storage medium, such as apropagating signal.

The terms “program” or “software” are used herein in a generic sense torefer to any type of computer code or set of computer-executableinstructions that can be employed to program a computer or otherprocessor to implement various aspects of the present invention asdiscussed above. Additionally, it should be appreciated that accordingto one aspect of this embodiment, one or more computer programs thatwhen executed perform methods of the present invention need not resideon a single computer or processor, but may be distributed in a modularfashion amongst a number of different computers or processors toimplement various aspects of the present invention.

Computer-executable instructions may be in many forms, such as programmodules, executed by one or more computers or other devices. Generally,program modules include routines, programs, objects, components, datastructures, etc. that perform particular tasks or implement particularabstract data types. Typically the functionality of the program modulesmay be combined or distributed as desired in various embodiments.

Also, data structures may be stored in computer-readable media in anysuitable form. For simplicity of illustration, data structures may beshown to have fields that are related through location in the datastructure. Such relationships may likewise be achieved by assigningstorage for the fields with locations in a computer-readable medium thatconveys relationship between the fields. However, any suitable mechanismmay be used to establish a relationship between information in fields ofa data structure, including through the use of pointers, tags or othermechanisms that establish relationship between data elements.

Various aspects of the present invention may be used alone, incombination, or in a variety of arrangements not specifically discussedin the embodiments described in the foregoing and is therefore notlimited in its application to the details and arrangement of componentsset forth in the foregoing description or illustrated in the drawings.For example, aspects described in one embodiment may be combined in anymanner with aspects described in other embodiments.

Also, the invention may be embodied as a method, of which an example hasbeen provided. The acts performed as part of the method may be orderedin any suitable way. Accordingly, embodiments may be constructed inwhich acts are performed in an order different than illustrated, whichmay include performing some acts simultaneously, even though shown assequential acts in illustrative embodiments.

Use of ordinal terms such as “first,” “second,” “third,” etc., in theclaims to modify a claim element does not by itself connote anypriority, precedence, or order of one claim element over another or thetemporal order in which acts of a method are performed, but are usedmerely as labels to distinguish one claim element having a certain namefrom another element having a same name (but for use of the ordinalterm) to distinguish the claim elements.

Also, the phraseology and terminology used herein is for the purpose ofdescription and should not be regarded as limiting. The use of“including,” “comprising,” or “having,” “containing,” “involving,” andvariations thereof herein, is meant to encompass the items listedthereafter and equivalents thereof as well as additional items.

1. A method for controlling communication between a virtualized networkand a non-virtualized entity, comprising: receiving, by a virtualizationgateway, a packet sent by a virtual machine in the virtualized networkto the non-virtualized entity and routed to a provider address of thegateway by a host of the virtual machine; translating, by the gateway,the provider address of the gateway to a destination address of thenon-virtualized entity; and sending, by the gateway, the packet to thenon-virtualized entity.
 2. A method as defined in claim 1, wherein thenon-virtualized entity comprises a physical resource having a customeraddress and wherein translating comprising translating the provideraddress of the gateway to the customer address of the physical resource.3. A method as defined in claim 1, wherein the non-virtualized entitycomprises a physical resource having a provider address and whereintranslating the provider address of the gateway comprises performingnetwork address translation in the customer address space.
 4. A methodas defined in claim 3, wherein performing network address translationcomprises performing a first network address translation in response toa packet received from a virtual machine in a first virtual network andperforming a second network address translation in response to a packetreceived from a virtual machine in a second virtual network.
 5. A methodas defined in claim 3, wherein performing network address translationcomprises performing network address translation of a first provideraddress of the virtual machine before live migration and performingnetwork address translation of a second provider address of the virtualmachine following live migration.
 6. A method as defined in claim 1,wherein translating the provider address of the gateway comprisesaccessing a virtual network policy containing a mapping policy that mapsthe provider address of the gateway to the destination address of thenon-virtualized entity.
 7. A method as defined in claim 6, furthercomprising receiving, by the gateway, a mapping policy update from avirtual machine manager of the virtualized network.
 8. A method asdefined in claim 1, further comprising: receiving, by the gateway, apacket sent by the non-virtualized entity to the virtual machine;translating, by the gateway, a customer address of the virtual machineto a provider address of the virtual machine in the virtualized network;and sending, by the gateway, the packet to the provider address of thevirtual machine in the virtualized network.
 9. A method as defined inclaim 1, wherein the non-virtualized entity comprises a Non-IP physicalresource.
 10. A computer-readable storage device encoded withcomputer-executable instructions that, when executed by a computingdevice, perform a method as defined in claim
 1. 11. A virtualizationgateway for controlling communication between a virtualized network anda non-virtualized entity, comprising: a processing device and a storagedevice encoded with instructions that, when executed by the processingdevice, are configured to: receive a packet sent by a virtual machine inthe virtualized network to the non-virtualized entity and routed to aprovider address of the gateway by a host of the virtual machine;translate the provider address of the gateway to a destination addressof the non-virtualized entity; and send the packet to thenon-virtualized entity.
 12. A virtualization gateway as defined in claim11, wherein the non-virtualized entity comprises a physical resourcehaving a customer address and wherein the virtualization gateway isfurther configured to translate the provider address of the gateway tothe customer address of the physical resource.
 13. A virtualizationgateway as defined in claim 11, wherein the non-virtualized entitycomprises a physical resource having a provider address and wherein thevirtualization gateway is configured to perform network addresstranslation in the customer address space.
 14. A virtualization gatewayas defined in claim 11, further configured to access a virtual networkpolicy containing a mapping policy that maps the provider address of thegateway to the destination address of the non-virtualized entity.
 15. Amethod for controlling communication between a virtualized network and anon-virtualized entity, comprising: receiving, by a host, a packet sentby a virtual machine to the non-virtualized entity at a destinationaddress; translating, by the host, the destination address of the packetto a provider address of a virtualization gateway; and sending, by thehost, the packet to the provider address of the virtualization gatewayfor address translation and sending to the non-virtualized entity.
 16. Amethod as defined in claim 15, wherein the non-virtualized entitycomprises a dedicated physical resource having a customer address.
 17. Amethod as defined in claim 15, wherein the non-virtualized entitycomprises a shared physical resource having a provider address.
 18. Amethod as defined in claim 15, wherein translating the destinationaddress of the packet comprises accessing a virtual network policycontaining a mapping policy that maps the destination address of thenon-virtualized entity to the provider address of the gateway.
 19. Amethod as defined in claim 15, wherein translating the destinationaddress of the packet comprises one of encapsulating the packet with theprovider address of the virtualization gateway and rewriting thedestination address of the non-virtualized entity as the provideraddress of the virtualization gateway.
 20. A computer-readable storagedevice encoded with computer-executable instructions that, when executedby a computing device, perform a method as defined in claim 15.